package org.example;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;

//
//import com.alibaba.fastjson.JSONObject;
//import org.apache.poi.ss.usermodel.Cell;
//import org.apache.poi.ss.usermodel.Row;
//import org.apache.poi.ss.usermodel.Sheet;
//import org.apache.poi.xssf.usermodel.XSSFSheet;
//import org.apache.poi.xssf.usermodel.XSSFWorkbook;
//import org.example.entity.Item2;
//import org.example.entity.Item3;
//import org.example.entity.MapMine;
//import org.example.entity.ProductInfo;
//
//
//import java.io.*;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
//
@MapperScan("org.example.dao")
@org.springframework.boot.autoconfigure.SpringBootApplication
public class SpringBootApplication {

    public static void main(String[] args){
        SpringApplication.run(SpringBootApplication.class,args);
    }

}
//    public static void main(String[] args) {
//        getExcelData();
//    }
//
//
//    // 生成Excel表格
//    private static void getExcelData() {
//        XSSFWorkbook workbook = null;
//        try {
//            InputStream is = SpringBootApplication.class.getClassLoader().getResourceAsStream("demo9.xls");
//            workbook = new XSSFWorkbook(is);
//            // 输出流
//            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//            for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
//                // 获取sheet
//                XSSFSheet sheetAt = workbook.getSheetAt(i);
//                fillInvoiceBaseData(sheetAt, getInvoiceBaseInfoData());
//            }
//
//            // excel工作空间写入流
//            workbook.write(byteArrayOutputStream);
//            InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
//            // 写到本地
//            writeToLocal("D:\\invoice111.xlsx", inputStream);
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//            // 关闭流
//            if (null != workbook) {
//                try {
//                    workbook.close();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//    }
//
//    private static void fillInvoiceBaseData(Sheet sheet, List<Map<String,Object>> list) {
//        // 碰到 时间、金额等需要转换的  在setCellValue 里面操作
//        Pattern braceRegex = Pattern.compile("\\{\\{.*\\}\\}");
//        Pattern regex = Pattern.compile("\\$\\{.*\\}");
//        String replaceRegx = "[^a-zA-Z0-9-.]";
//        String splitRegex = "\\.";
//
//        for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) {
//            Row row = sheet.getRow(rowNum);
//            for (int cellNum = 0; cellNum < row.getLastCellNum(); cellNum++) {
//                Cell cell = row.getCell(cellNum);
//                String stringCellValue = cell.getStringCellValue();
//
//                Matcher braceMatcher = braceRegex.matcher(stringCellValue);
//                Matcher matcher = regex.matcher(stringCellValue);
//                if (!braceMatcher.matches() && !matcher.matches()) {
//                    continue;
//                }
//                String cleanedString = stringCellValue.replaceAll(replaceRegx, "");
//                String[] split = cleanedString.split(splitRegex);
//
//                for (int k = 0; k < list.size(); k++) {
////                  当前map相当于一个对象
//                    Map<String, Object> stringObjectMap =  list.get(k);
//                    if (split.length >  1) {
//                        String recursion = recursion(stringObjectMap,cleanedString,split[0]);
//                        cell.setCellValue(recursion);
//                    }
//                    Object o = stringObjectMap.get(cleanedString);
//                    if (o != null) {
//                        cell.setCellValue(o.toString());
//                    }
//                }
//            }
//        }
//    }
//
//
//    public static String recursion(Map<String, Object> stringObjectMap,String split,String key){
//        Map mapInner = (Map) stringObjectMap.get(key);
//        split = split.substring(key.length() + 1, split.length());
//        String[] splitInner = split.split("\\.");
//        if(splitInner.length>1){
//           return recursion(mapInner, split, splitInner[0]);
//        }
//        if (mapInner == null) return null;
//        Object o = mapInner.get(split);
//        if (o == null) return null;
//        System.out.println(o.toString());
//        return o.toString();
//    }
//
//    private static void writeToLocal(String destination, InputStream input) throws IOException {
//        int index = 0;
//        byte[] bytes = new byte[1024];
//        FileOutputStream downloadFile = new FileOutputStream(destination);
//        while ((index = input.read(bytes)) > 0) {
//            downloadFile.write(bytes, 0, index);
//        }
//        downloadFile.close();
//        input.close();
//    }
//
//    // 要导出的数据
//    private static List<Map<String,Object>> getInvoiceBaseInfoData() {
//        ProductInfo.ProductInfoBuilder builder = ProductInfo.builder();
//        builder.pdName("交易日理财的产品").pdCode("SSDAF2323").cplx("期货").cpclrq("2023-10-13")
//                .cphtzzrq("2023-10-13").barq("2023-10-13").cpqx("ihi").status("运营")
//                .cpjgsfzc("主从").fejb("百分之五十").cdqk("正常使用").momqk("正常").fqcpqs("五次")
//                .cpkfrgz("次日到账").lskfljcs("三次");
//
//        Item3 item3 = new Item3();
//        item3.setZhlb("四层测试");
//        Item2 item2 = new Item2();
//        item2.setFundmanagerName("乔布斯").setFundmanagerDuties("产品经理")
//                .setFundCurriculumvitae("发明家").setItem3(item3);
//
//        MapMine map = new MapMine();
//        map.setCpjc("测试简介").setXhclsj("测试编号").setXhcplx("测试类型").setXhclsj("2024-10-11")
//                .setXhdqsj("2024-10-11").setCpyzfs("测试运作方式").setCxqx("3个月").setItem2(item2);
//        builder.map(map);
//        ProductInfo build = builder.build();
////      对象转成map，先写死
//
//        Map<String, Object> mapValue = JSONObject.parseObject(JSONObject.toJSONString(build), Map.class);
//        Map<String,Object> resultMap = new HashMap<>();
//        for (Map.Entry<String, Object> param : mapValue.entrySet()) {
//            resultMap.put(param.getKey(), param.getValue());
//        }
//        List<Map<String,Object>> arrayList =  new ArrayList<>();
//        arrayList.add(resultMap);
//
//        return arrayList;
//    }
//
//
//}
